package ru.bytedog.oiot.counter.bot.bean.oiot;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

/**
 * Ответ в случаи получения ошибки от сервиса OIOT.RU
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class OiotErrorResponse implements IOiotResponse {

    private static final Map<String, String> errorsTranslate = Map.of(
            "Bad authtorise.", "Ошибка авторизации в сервисе OIOT.RU",
            "Need parametr id.", "В настройках не указан идентификатор учетной записи",
            "Need parametr token.", "В настройках не указан токен",
            "date is wrong format.", "Запрашиваемая дата имеет не верный формат"
    );

    private List<String> errors;

    @Override
    public String getBotMessage() {
        return "Не удалось получить показатели счетчиков от сервиса OIOT.RU по "
                .concat(errors.size() > 1 ? "причинам" : "причине")
                .concat(":\n")
                .concat(errors.stream()
                        .map(error -> errorsTranslate.getOrDefault(error, error))
                        .collect(Collectors.joining("\n")));
    }
}
